//
// Created by Mzoro on 2022/4/1.
//
#include <stdio.h>

#define prtf(ex)   printf(#ex" :%s\n",ex)

int main() {
    char aMessage[] = "I'm ok!";
    char *pMessage = "I'm not ok!";
    char *pMessage2;

    pMessage2 = aMessage;

    prtf(aMessage);
    prtf(pMessage);
    prtf(pMessage2);

    aMessage[2] = 'M'; // 可以修改
    prtf(aMessage);

    pMessage+=2;
//    *pMessage = 'M'; // 运行时出错
    prtf(pMessage);

    // 这个也相当于将字符串截断了,但没有真的截断，再减回去还可以的
    pMessage2+=2;
    // 可以，因为pMessage2 实质是一个数组赋值，和 pMessage 的初始化方式是不一样的
    // 另外，c本身没有提供整体复制字符串的方法，pMessage2 = aMessage 只是指针的复制，不是复制字符串, 打印aMessage 可以看到，值也变了
    *pMessage2 = 'W';
    prtf(pMessage2);
    prtf(aMessage);

    pMessage2-=2;
    prtf(pMessage2);

    // 这里多减了2 ，相当于 \0\0IW... ,因为C规定\0是字符串的结尾，所以会打印空白串
    pMessage2-=2;
    prtf(pMessage2);
    return 0;
}
